using YasharEl.Infrastructure.ApplicationModel.Bootstrap.Extensibility;
using YasharEl.Infrastructure.ApplicationModel.Bootstrap.Configuration.Internals;

namespace YasharEl.Infrastructure.ApplicationModel.Bootstrap.Configuration
{
    /// <summary>
    /// Default factory for the <see cref="ConfigurationSectionBehavior"/>.
    /// </summary>
    public class DefaultConfigurationSectionBehaviorFactory : IConfigurationSectionBehaviorFactory
    {
        public virtual IHaveConfigurationSectionName CreateHaveConfigurationSectionName(IBootstrappingExtension extension)
        {
            return new HaveConfigurationSectionName(extension);
        }

        public virtual ILoadConfigurationSection CreateLoadConfigurationSection(IBootstrappingExtension extension)
        {
            return new LoadConfigurationSection(extension);
        }

        public virtual IConsumeConfigurationSection CreateConsumeConfigurationSection(IBootstrappingExtension extension)
        {
            return new ConsumeConfigurationSection(extension);
        }
    }
}